home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / 071-080 / amok78 / sgconfiguration / sgconfig.dok < prev    next >
Text File  |  1993-11-04  |  5KB  |  156 lines

  1.  
  2.  
  3.                    SGConfiguration  V 1.1
  4.                    ----------------------
  5.  
  6. Copyright © 1992 by hartmut Goebel
  7.  
  8. SGConfiguration ist ein Modul aus der Style Guide Support Library
  9. des Zerberus Oberon Club (ZOC).
  10.  
  11. SGConfiguration dient dazu, Konfigurationsdateien Style-Guide-
  12. konform zu lesen und zu schrieben.
  13.  
  14. .....8<..------------
  15.  
  16. DEFINITION SGConfiguration;
  17.  
  18. IMPORT
  19.   d := Dos;
  20.  
  21. TYPE
  22.   ReadProc = PROCEDURE(file: d.FileHandlePtr): BOOLEAN;
  23.   WriteProc = PROCEDURE(name: ARRAY OF CHAR): BOOLEAN;
  24.  
  25. VAR
  26.   Extension : ARRAY 10 OF CHAR;
  27.   BaseName: ARRAY 40 OF CHAR;
  28.  
  29. PROCEDURE ReadConfig(VAR setting: ARRAY OF CHAR;
  30.                      VAR dirLock: d.FileLockPtr;
  31.                          currentFirst: BOOLEAN;
  32.                          envToTry: ARRAY OF CHAR;
  33.                          readProc: ReadProc): BOOLEAN;
  34.  
  35. PROCEDURE ReadConfigEH(VAR setting: ARRAY OF CHAR;
  36.                        VAR dirLock: d.FileLockPtr;
  37.                            currentFirst: BOOLEAN;
  38.                            envToTry: ARRAY OF CHAR;
  39.                            readProc: ReadProc): BOOLEAN;
  40.  
  41. PROCEDURE UseConfig(save: BOOLEAN;
  42.                     writeProc: WriteProc): BOOLEAN;
  43.  
  44. PROCEDURE WriteConfig(setting: ARRAY OF CHAR;
  45.                       dirLock: d.FileLockPtr;
  46.                       writeProc: WriteProc): BOOLEAN;
  47.  
  48. END SGConfiguration.
  49.  
  50. .....8<..------------
  51.  
  52.  
  53. Globale Variable
  54.  
  55.   BaseName:  BaseName der Applikation (siehe Kap. 2)
  56.              muß gesetzt werden!
  57.   Extension: Filenamen-Endung für die Konfigurations Files (ohne
  58.              führenden Punkt), Default: "config"
  59.  
  60.  
  61. PROCEDURE ReadConfig * (VAR setting : ARRAY OF CHAR;
  62.                         VAR dirLock : d.FileLockPtr;
  63.                             currentFirst: BOOLEAN;
  64.                             envToTry: ARRAY  OF CHAR;
  65.                             readProc: ReadProc): BOOLEAN;
  66.  
  67.  
  68. Findet heraus, welche Konfiguration geladen werden soll und ruft
  69. <readProc> auf, um die Datei zu lesen.
  70.  
  71. Wird ein leerer string als <setting> übergegeben, wird gemäß Sytle
  72. Guide gesucht.
  73.  
  74. Die anderne Paramter sind:
  75.   setting:      wenn vom Benutzer angegeben, sonst""
  76.   currentFirst: suche zu allererst im aktuellen Verzeichniss (wenn
  77.                 <setting> nicht angegeben ist)
  78.   envToTry:     versuche die in dieser Shell-Variablen angegebene Datei
  79.                 zu laden, bevor versuch wird, die Konfig im
  80.                 PROGDIR: zu laden
  81.   readProc:     diese Prozedur liest die Datei
  82.                 Die Prozedur darf das File NICHT schließen.
  83.  
  84. Rückgabe:
  85.   es wird das Ergebniss von <readProc> zurückgegeben, oder FALSE,
  86.   falls keine Konfiguration gefunden wurde
  87.  
  88.   setting:      die Konfigurationsdatei, die wirklich gelesen wurde
  89.   dirLock:      Lock auf das Directory, aus dem die Konfig gelesen
  90.                 wurde
  91.                 Achtung: dieser Lock muß fom Programm freigegeben
  92.                 werden, sobald er nicht mehr benötigt wird.
  93.  
  94.  
  95. Gesucht wird - falls <setting> nicht angegeben wird - nach folgenden
  96. Dateien:
  97.     <BaseName>.<Extension>  im current dir bzw. in PROGDIR:
  98.     ENV:<BaseName>/<BaseName>.<Extension>
  99.  
  100.  
  101. PROCEDURE ReadConfigEH * (VAR setting : ARRAY OF CHAR;
  102.                           VAR dirLock : d.FileLockPtr;
  103.                               currentFirst: BOOLEAN;
  104.                               envToTry: ARRAY  OF CHAR;
  105.                               readProc: ReadProc): BOOLEAN;
  106.  
  107. Arbeitet änlich wie ReadConfig, einziger Unterschied ist die
  108. Suchreihenfolge:
  109.   <envToTry> - ENV: - <current dir> - PROGDIR:
  110.  
  111. (EH steht für Env-Home :-)
  112.  
  113.  
  114. PROCEDURE UseConfig * (save: BOOLEAN;
  115.                        writeProc: WriteProc): BOOLEAN;
  116.  
  117. Speichert die Konfig nach ENV:<BaseName>/<BaseName>.<Extension>.
  118. Existiert das Unterverzeichnis ENV:<BaseName> noch nicht, wird es
  119. eingerichtet.
  120.  
  121. Parameter:
  122.   save     : TRUE: speichere ebenfalls nach ENVARC:
  123.                    Unterverzeichnis wird ggf. eingerichtet
  124.   writeProc: diese Prozedur schreibt die Konfiguration
  125.  
  126. Rückgabe:
  127.   es wird das Ergebniss von <writeProc> zurückgegeben, oder FALSE,
  128.   falls sich ein Unterverzeichnis nicht einrichten lies.
  129.  
  130.  
  131. PROCEDURE WriteConfig * (setting: ARRAY OF CHAR;
  132.                          dirLock : d.FileLockPtr;
  133.                          writeProc: WriteProc): BOOLEAN;
  134.  
  135. Findet heraus, wohin die Konfiguration gespeichert werden werden
  136. soll und ruft <writeProc> auf, die die Konfig-Datei schreibt.
  137.  
  138. Wird <setting> nicht mit angegeben, wird versucht, dir Konfig in
  139. PROGDIR: zu schreiben, anschließend nach ENV: und ENVARC:
  140.  
  141. Die anderne Paramter sind:
  142.  
  143.   setting  : die geladene bzw. die zu schriebende Konfig (sonst "")
  144.   dirLock  : Lock aud das Dir, von dem die Konfig gelesen wurde
  145.              (Rückgabe von ReadKonfig).
  146.   writeProc: diese Prozedur schreibt die Konfiguration
  147.  
  148. Rückgabe:
  149.   es wird das Ergebniss von <writeProc> zurückgegeben, oder FALSE,
  150.   falls sich ein Unterverzeichnis nicht einrichten ließ.
  151.  
  152.  
  153. Viel Spaß
  154.  
  155. +++hartmut
  156.